package com.yunpeng.aidevice.dao.service;

import com.alibaba.fastjson.JSONArray;
import com.yunpeng.common.dto.Result;
import com.yunpeng.aidevice.common.dto.save.DeviceNoticeParameterSaveDTO;
import com.yunpeng.aidevice.common.dto.save.NoticeUserSaveDTO;
import com.yunpeng.aidevice.common.vo.device.DeviceNoticeUserConfigVO;
import com.yunpeng.aidevice.dao.model.record.NoticeConfigDO;
import com.yunpeng.aidevice.dao.model.record.NoticeRuleParameterDO;

import java.util.List;

/**
 * INoticeRuleService 通知规则服务
 *
 * @author : Moore(hemw)
 * @date : 2020-04-28
 */
public interface INoticeRuleService {
    /**
     * 通知规则的下拉列表
     *
     * @return
     */
    JSONArray ruleDropdownList();

    /**
     * 获取规则的参数下拉菜单列表
     *
     * @param scriptCodes 脚本代码集合
     * @param deviceCode  需要设置提醒的设备代码
     * @return
     */
    JSONArray ruleParameterDropdownList(List<String> scriptCodes, String deviceCode);

    /**
     * 删除设备的用户提醒设置
     *
     * @param deviceCode 设备代码
     * @param userCode   用户代码
     * @param scriptCode 规则代码
     * @return
     */
    Boolean deletedDeviceNoticeUser(String deviceCode, String userCode, String scriptCode);

    /**
     * 设备的报警用户列表
     *
     * @param deviceCode 设备代码
     * @return
     */
    List<NoticeConfigDO> deviceNoticeUserList(String deviceCode);

    /**
     * 新增提醒用户
     *
     * @param noticeUserSaveDTO 提醒用户信息
     * @param operatorCode      操作人代码
     * @return
     */
    Boolean addNoticeToUser(NoticeUserSaveDTO noticeUserSaveDTO, String operatorCode);

    /**
     * 配置设备提醒参数
     *
     * @param deviceNoticeParameterSaveDTO 设备提醒参数信息
     * @param operatorCode                 操作人代码
     * @return
     */
    Boolean configDeviceNoticeParameters(DeviceNoticeParameterSaveDTO deviceNoticeParameterSaveDTO, String operatorCode);

    /**
     * 获取指定的设备规则参数值
     *
     * @param deviceCode
     * @param ruleName
     * @param parameterName
     * @return
     */
    NoticeRuleParameterDO getDeviceNoticeRuleParameter(String deviceCode, String ruleName, String parameterName);
}
